//代理模式：把房东不方便做的事情交给中间人去做
//即一个对象完成的功能不能暴露给外部直接完成，需要借助一个中间商完成

#include<iostream>
#include<string>
using namespace std;

//定义租房抽象类提供租房方法
class RentHouse
{
public:
    virtual void Rent()=0;
};

//定义一个房东完成租房的功能
class LandLord:public RentHouse
{
public:
    void Rent() override
    {
        cout<<"我是房东，我要出租"<<endl;
    }
};

//定义一个中间商,既要完成自己的事情也要完成房东的事情
class middlemen:public RentHouse
{
public: 
    void Rent() override
    {
        cout<<"打广告"<<endl;
        lord.Rent();
        cout<<"专修"<<endl;
    }

private:
    LandLord lord;//定义房东对象为成员变量,把房东的事情拿到
};

int main()
{
    middlemen Midmen;
    Midmen.Rent();
    return 0;


}